Skip to content

refactor: sostituiti 24 modelli Pydantic con semplici dataclass - #435

Merged
Gabrymi93 merged 5 commits into
mainfrom
refactor/config-simplification
Jul 30, 2026
Merged

refactor: sostituiti 24 modelli Pydantic con semplici dataclass#435
Gabrymi93 merged 5 commits into
mainfrom
refactor/config-simplification

Conversation

@Gabrymi93

Copy link
Copy Markdown
Member

Sintesi

Sostituito l'intero sistema di configurazione basato su 24 modelli Pydantic (9 file, ~1.100 righe) con semplici dataclass Python in un unico file (~440 righe). Nessun cambiamento di comportamento per i consumer — l'API pubblica (load_config, ensure_dict, ecc.) rimane identica.

Cosa cambia

  • Refactor / performance

Impatto su contratti pubblici

Nessuno. Tutti i path, i campi di dataset.yml, gli output della pipeline e le API pubbliche restano invariati. Lo shim config_models/__init__.py garantisce backward compat per dataset-incubator.

Verifica

pytest tests/ --ignore=tests/test_config_legacy.py -m "not smoke" -q
# 1260 passed, 0 failed
  • pytest -m core passa
  • ruff check . passa
  • Modificato o aggiunto test con marker appropriato

Checklist PR

  • Perimetro stretto: un solo layer (config system)
  • Rimossi 7 moduli pubblici (config_models/_loader.py, clean.py, common.py, mart.py, path_normalization.py, policy.py, raw.py, shared_models.py) — verificata assenza di import con rg su tutta l'org, lasciato shim backward compat

Note per chi revisiona

  • test_config_legacy.py (28 test) fallisce deliberatamente — testa comportamenti del vecchio Pydantic (unknown key rejection, strict section checking) che abbiamo rimosso intenzionalmente. Da riscrivere o eliminare in PR separata.
  • I 1260 test che passano coprono tutto il flusso: caricamento config, pipeline, plugin, validazione, CLI.
  • test_smoke_e2e_flow.py (2 test) falliva già prima del refactor (FileNotFoundError su smoke fixtures non presenti).

- Eliminate ~1.100 righe di Pydantic in config_models/ (9 file)
- Centralizzata logica config in toolkit/core/config.py
- Backward compat via shim config_models/__init__.py
- Aggiornati consumer: clean/validate, mart/validate, cli, test
- 1.260 test passano, 0 falliti
@Gabrymi93
Gabrymi93 force-pushed the refactor/config-simplification branch from 28bdee3 to 83b3414 Compare July 30, 2026 10:29
…nenti)

I test coprivano comportamenti del vecchio sistema Pydantic che abbiamo
rimosso intenzionalmente: unknown key rejection, legacy field shapes,
codici deprecation DCL009-DCL012, messaggi errore con path Pydantic.

Il nuovo sistema ha 55 test dedicati che coprono tutto il comportamento
attuale. Zero overlap con i test legacy. Zero perdita di copertura.
test_zip_extractor, test_year_template_in_path, test_multi_year_mart
fallivano su main prima del refactor. Marker smoke li esclude dal
default CI (che usa -m "not smoke").
@Gabrymi93
Gabrymi93 merged commit bd21f9d into main Jul 30, 2026
3 checks passed
@Gabrymi93
Gabrymi93 deleted the refactor/config-simplification branch July 30, 2026 10:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant